Copyright: Copyright 1996 NuMega Technologies
Citation: Copyright 1996 NuMega Technologies. All rights reserved.


Overview

Symbol Loader does the following:

•	Translates the modules you want to debug into symbol information, then loads the symbol information and, optionally, source into SoftICE.

Translating and loading symbol information and source are two steps in the process for preparing to debug source.

•	Maintains the initialization settings that determine your debugging environment.

•	Lets you save the contents of the SoftICE history buffer to a file.

There are two ways to use Symbol Loader:

•	Use the graphical interface you currently have open.

•	Use Symbol Loader from a DOS prompt.


Preparing to Debug Source

SoftICE allows you to debug all Windows applications and device drivers at source level. However, before you can debug code, you need to prepare it. The methods you use to prepare code for debugging vary depending upon whether you are debugging applications or device drivers and VxDs.

What do you want to do?

  Prepare to debug applications

  Prepare to debug device drivers and VxDs


Preparing to Debug Applications

The following general steps explain how to prepare to debug applications that run after the operating system boots. These applications include EXEs, DLLs, dynamic VxDs, and OCXs.

1	Build the application  with debug information.

2	If SoftICE is not already loaded, load SoftICE.

3	Start Symbol Loader.

4	Click the Open [image] to open the module you want to debug.

5	Use Symbol Loader to translate and load your module.

Note

Symbol Loader only supports Windows applications. To debug MS-DOS applications, use the utilities and documentation provided in the UTIL16 directory.

  Related Topics


Preparing to Debug Device Drivers and VxDs

If you are debugging a device driver or static VxD that loads before the operating system fully initializes, follow these general steps:

1	Build the application with debug information.

2	If SoftICE is not already loaded, load SoftICE.

3	Start Symbol Loader.

4	Click the Open [image] to open the module you want to debug.

5	Click Package source with symbol table [image] .

6	Click Translate [image] to create a new .NMS symbol file.

7	Modify the SoftICE initialization settings to pre-load the symbols and source code information for the VxD or device driver on startup.

8	Reboot your PC.

Note

Symbol Loader only supports Windows applications. To debug MS-DOS applications, use the utilities and documentation provided in the UTIL16 directory.

  Related Topics


Loading SoftICE Manually

SoftICE does not load automatically under the following configurations:

•	If you did not run WINICE.EXE from the AUTOEXEC.BAT before starting Windows 95

•	When you set SoftICE for Windows NT to Manual Startup mode

If you are using these configurations, you need to load SoftICE manually.

What do you want to do?

  Load SoftICE for Windows 95

  Load SoftICE for Windows NT


Loading SoftICE for Windows 95

To load SoftICE for Windows 95, load it from the DOS command line. SoftICE automatically runs Windows 95 after it initializes. Use the following syntax:

Command Syntax

WINICE [/HST n] [/TRA n] [/SYM n] [/M]

       [/LOAD[x] name]

       [/EXP name] [drive:\path\WIN.COM

       [Windows-command-line]]

Where these switches are optional:

Optional Switch	Definition
/EXP	Adds exports from the .DLL or Windows application specified by name to the SoftICE export list. This lets you symbolically access these exported symbols.
/HST n	Increases the size of the command recall buffer, where n is a decimal number that represents the number of kilobytes. The default is 8KB.
/LOAD name[x]	Loads symbol and source, where name is the complete path and file name for a VxD, DOS program, Windows driver, Windows DLL, or Windows program that was built with symbols. If x is present, source is not loaded.
/M	Directs SoftICE output to the secondary monochrome monitor, bypassing any initial VGA programming. You can also use this optional switch for serial debugging by specifying /M on the command line and including a serial command in the Initialization string.
/SYM n	Allocates a symbol table, where n is a decimal number that represents the number of kilobytes. The default is 0KB.
/TRA n	Increases the size of the back trace history buffer, where n is a decimal number that represents the number of kilobytes. The default is 8KB.

Hint

You can specify these switches in the Initialization string.

  Related Topics


Loading SoftICE for Windows NT

To load SoftICE for Windows NT:

•	Select Start SoftICE.

•	Enter the command: NET START NTICE.

Note

Once you load SoftICE, you cannot deactivate it until you reboot your PC.


Building Applications with Debug Information

The following compiler-specific information is provided as a convenience. Consult your compiler or assembler documentation for more information about building your application with debug information.

•	Borland C++ 4.5 and 5.0

•	Delphi 2.0

•	MASM 6.11

•	Microsoft Visual C++ 2.x, 4.0, 4.1, and 4.2

•	Symantec C++ 7.2

•	Watcom C++ 10.5


Borland C++ 4.5 and 5.0

To generate Borland's standard debug information:

•	Compile with /v.

•	Link with /v.


Delphi 2.0

To generate Delphi's standard debug information, compile with:

•	-V to include debug information in the executable

•	-$W+ to create stack frames

•	-$D+ to create debug information

•	-$L+ to create local debug symbols


MASM 6.11

To generate Codeview debug information:

•	Assemble with /Zi /COFF.

•	Use Microsoft's 32-bit LINK.EXE to link with /DEBUG /DEBUGTYPE:CV /PDB:NONE.


Microsoft Visual C++ 2.x, 4.0, 4.1, 4.2, and 5.0

To generate Program Database (PDB) debug information:

•	Compile with Program Database debug information, using the command-line option /Zi.

•	Use Microsoft's linker to link with /DEBUG /DEBUGTYPE:CV.

Note

VxDs require you to generate PDB debug information.

To generate Codeview debug information:

•	Compile with C7-compatible debug information, using the command-line option /Z7.

•	Use Microsoft's linker to link with /DEBUG /DEBUGTYPE:CV /PDB:NONE.

Note

If you are using the standard Windows NT DDK make procedure, use the following environment variables: NTDEBUG=ntsd and NTDEBUGTYPE=windbg.


Symantec C++ 7.2

The Symantec compiler produces Codeview debug information by default. All that is required is to enable the output of debug information:

•	Compile with -g.

Other qualifiers are available, for example, -gh, -gf, and -gg.

•	Link with /CO.


Watcom C++ 10.5

To generate Codeview full debug information:

•	Compile with -hc -d3 .

•	Link with DEBUG CODEVIEW OPTION CVPACK.


Loading and Translating Files

Before SoftICE can debug your application, .DLL, or driver, you need to create a .NMS symbol file for each of the files you want to debug and load these files into SoftICE. Symbol Loader automates this process:

1	Click Open [image].

2	Select the file you want to load and click Open.

3	Click Load [image] to load the open file.

Symbol Loader translates your application's debug information into a .NMS symbol file. Then, Symbol Loader loads the symbol, source, and executable files into SoftICE. By default, Symbol Loader loads all the files referenced in the debug information. To limit the source files Symbol Loader loads, specify the program source files.

Note

The information Symbol Loader loads depends on the Translation and Debugging Module settings.

  Related Topics


Specifying Program Source Files

By default, all program source files that are referenced in the debug information are loaded. Depending on your needs, loading all program source files may not be necessary. Also, if the number of source files is large, loading all source files may not be practical.

To avoid loading unnecessary source files, SoftICE lets you use a .SRC files to specify which source files to load for an executable module. A .SRC file is a text file that you create in the directory where your executable resides. The filename of the .SRC file is the same as the filename of the executable, but with a .SRC extension. The .SRC file contains a list of the source files that are to be loaded, one per line.

Example

The SRC file for an executable named PROGRAM.EXE contains the following:

FILE1.C

FILE3.CPP

FILE4.C

FILE1.C, FILE3.CPP, and FILE4.C are loaded. FILE2.C, a valid program source file, is not loaded, because it does not appear in the .SRC file.


Using Symbol Loader From a DOS Prompt

Symbol Loader (LOADER32.EXE) supports a command-line interface that lets you use many of its features from a DOS prompt without viewing Symbol Loader's graphical interface. Thus, you can automate many of the most common tasks it performs.

Before you use LOADER32.EXE from a DOS prompt, use Symbol Loader's graphical interface to set the default search paths and to specify translation and debugging settings for each module you plan to load. Symbol Loader saves these settings for each file and uses them when you use Loader32 to load or translate files from a DOS prompt.

To run LOADER32.EXE, either set your directory to the directory that contains LOADER32.EXE or specify the SoftICE directory in your search path.

Command Syntax

LOADER32 [[option(s)] filename]

Where options are:

Option	Definition
/EXPORTS	Loads exports for a file.
/LOAD	Translates the module into a .NMS file, if one does not already exist, and loads it into SoftICE. If you previously set Translation and Debugging settings for this file, LOADER.EXE uses these settings. If you did not specify these settings, LOADER.EXE uses the defaults for the module type.
/LOGFILE	Saves the SoftICE history to a log file.
/NOPROMPT	Instructs LOADER32.EXE not to prompt you if it cannot find a source file.
/PACKAGE	Saves your Source code with the symbol information in the .NMS file.
/TRANSLATE	Translates the module into a .NMS file using the Translation settings you set the last time you translated the file or, if none exist, the default translation for the module type.

 Command Syntax Guidelines

•	Options are not required. If you specify a filename without an option, LOADER32.EXE starts the Symbol Loader graphical interface and opens the file.

•	Specify the /TRANSLATE option with the /LOAD option to force LOADER32.EXE to translate the module before loading it.

•	Do not use the /EXPORTS or /LOGFILE options with any other option.

Note

If you specify an option, LOADER32.EXE does not display the Symbol Loader graphical interface unless it encounters an error. If LOADER32.EXE encounters an error, it displays the error in the Symbol Loader window.

  Related Topics


Deleting Symbol Tables

Every time you translate your source code, Symbol Loader creates a .NMS symbol file in the form of a symbol table. When you load your module, Symbol Loader stores the table in memory until you either delete the table or reboot your PC.

To delete a symbol table:

1	Choose Symbol Tables… from the Edit menu.

2	Click the ID for the table you want to delete and click Remove.

Hint

Click a header to sort the symbol tables by Table ID, Symbol Table, Type, SYM=, NMS Size, or Version. The list of symbol tables is sorted in ascending order.


Module Settings

The Symbol Loader uses a series of settings to control how it translates and loads files. These settings are categorized as follows:

•	General - Specifies command-line arguments and source file search paths.

•	Translation - Specifies which symbols Symbol Loader translates.

•	Debugging - Specifies the file types and information that Symbol Loader loads into SoftICE, as well as any default actions SoftICE performs at load time.

What do you want to do?

  Modify module settings


General Module Settings

Command line arguments

Source file search path for this program

Default Source file search path

Prompt for missing source files

Minimize Loader on successful load


Translation Module Settings

Publics only

Type information only

Symbols only

Symbols and source code

Package source with symbol table


Debugging Module Settings

Load symbol information only

Load executable

Stop at WinMain, Main, DllMain, etc.


Modifying Module Settings

To change the default module settings for a file:

1	Open the file if it is not already open.

2	Choose Settings from the Module menu.

3	Click the tab that represents the settings (General, Translation, or Debugging) you want to modify.

4	Modify the settings.

5	When you are done modifying the settings, click OK.

6	Load the file to apply your changes.

  Related Topics


Initialization Settings

SoftICE provides a variety of user-defined settings that determine your debugging environment at initialization. These settings are categorized as follows:

•	General - Provides a variety of useful SoftICE settings, including an initialization string of commands that automatically executes when you start SoftICE.

•	Symbols - Specifies the .NMS symbol files to load at initialization for debugging device drivers.

•	Exports - Specifies DLLs and EXEs from which to load export symbols at initialization.

•	Remote Debugging - Sets a default telephone number and modem initialization strings for remote debugging over a serial port.

•	Keyboard Mappings  - Assigns SoftICE commands to function keys.

•	Macro Definitions - Defines your own commands to use within SoftICE.

•	Troubleshooting - Provides solutions to potential problems.


General Initialization Settings

•	Initialization string

•	History buffer size

•	Trace buffer size

•	Total RAM

•	Display diagnostic messages

•	Trap NMI

•	Lowercase disassembly

What do you want to do?

  Modify General Initialization Settings

  Modify the Initialization string


Symbols Initialization Settings

Symbol buffer size

What do you want to do?

  Modify the Symbol buffer size

  Set symbols and source code pre-loading

  Remove symbols and source code pre-loading


Exports Initialization Settings

What do you want to do?

  Set exports pre-loading

  Remove exports pre-loading


Remote Debugging Initialization Settings

Telephone number

Serial connection

DIAL command

ANSWER command

What do you want to do?

  Modify Remote Debugging Initialization Settings


Keyboard Mappings Initialization Settings

What do you want to do?

  Create function keys

  Delete function keys

  Modify function keys

  Restore function keys

  View default function key assignments


Macro Definitions Initialization Settings

Macro limit

What do you want to do?

  Modify the Macro limit setting

  Create persistent macros

  Start persistent macros

  Stop persistent macros

  Modify persistent macros

  Delete persistent macros


Troubleshooting Initialization Settings

Disable mouse support

Disable Num Lock and Caps Lock programming

Do not patch keyboard driver

Disable mapping of non-present pages

Disable Pentium support

Disable thread-specific stepping

What do you want to do?

  Modify Troubleshooting settings

  Restore Troubleshooting settings


Modifying General Initialization Settings

To modify the General SoftICE initialization settings:

1	Choose SoftICE Initialization Settings... from the Edit menu.

2	Select the General tab.

3	Modify the settings and click OK.

4	Reboot your computer and run SoftICE to apply your changes.

  Related Topics


Modifying the Symbol Buffer Size

To modify the Symbol buffer size:

1	Choose SoftICE Initialization Settings... from the Edit menu.

2	Select the Symbols tab.

3	Type a number in the Symbol buffer size field.

4	Click OK.

5	Reboot your computer and run SoftICE to apply your changes.

  Related Topics


Modifying Remote Debugging Initialization Settings

To modify the Remote Debugging SoftICE initialization settings:

1	Choose SoftICE Initialization Settings... from the Edit menu.

2	Select the Remote Debugging tab.

3	Modify the settings and click OK.

4	Reboot your computer and run SoftICE to apply your changes.

  Related Topics


Modifying the Macro Limit

To set the Macro Limit:

1	Choose SoftICE Initialization Settings... from the Edit menu.

2	Select the Macro Definitions tab.

3	Enter a number from 32 to 256 in the Macro limit field.

4	Click OK.

5	Reboot your computer and run SoftICE to apply your changes.

  Related Topics


Modifying Troubleshooting Initialization Settings

To modify the Troubleshooting SoftICE initialization settings:

1	Choose SoftICE Initialization Settings... from the Edit menu.

2	Select the Troubleshooting tab.

3	Modify the settings and click OK.

4	Reboot your computer and run SoftICE to apply your changes.

  Related Topics


Restoring Troubleshooting Settings

To restore all the Troubleshooting settings to their original values:

1	Choose SoftICE Initialization Settings... from the Edit menu.

2	Select the Troubleshooting tab.

3	Click Restore Defaults.

4	Click OK.

  Related Topics


Modifying the Initialization String

Initialization string executes a series of commands when SoftICE initializes. By default, Initialization string contains the X (exit) command delimited with a semi-colon, as follows:

X;

To modify the Initialization string:

1	Choose SoftICE Initialization Settings... from the Edit menu.

2	Select the General tab.

3	Modify the Initialization string

To add commands to Initialization string, type one or more semi-colon delimited commands before the X (exit) command. Commands are processed in the order in which you place them. Thus, placing a command after the X command means the command does not execute until you pop up the SoftICE window. If you type a command without a semicolon, SoftICE loads the command into the Command window, but does not execute it.

Example

The following initialization string switches SoftICE to 50-line mode, changes the hot key sequence to Alt-Z, toggles the Register window on, and exits from SoftICE:

LINES 50;ALTKEY ALT Z;WR;X;

4  Click OK.

5  Reboot your computer and run SoftICE to apply your changes.

  Related Topics


Setting Symbols and Source Code Pre-loading

Pre-loading symbols and source code is useful for debugging device drivers.

To pre-load symbols or source code:

1	Open the file for which you want to pre-load symbols and source.

2	If you want your source code loaded in addition to the symbols, click Symbols and source code [image].

3	Click Package source with Symbol table [image].

4	Click Translate [image] to translate the module into a .NMS symbol file.

5	Choose SoftICE Initialization Settings... from the Edit menu.

6	Click the Symbols tab.

7	Click Add.

8	Select one or more .NMS symbol files and click OK.

•	Normally, your .NMS symbol file has the same base name as the file you translated. Under Windows 95, SoftICE cannot preload files with long file names, because SoftICE is in real-mode DOS when it initializes. If your module is a long file name, create the .NMS file, rename the .NMS file to an eight-character name with the extension .NMS, and select the renamed .NMS file when you add it to the symbols list.

Alternately, you can use the Symbol Loader command-line utility, NMSYM, to specify the output file name.

•	When you select Package source with Symbol table, source files are part of the .NMS symbol file. Thus, there are no restrictions on source file name lengths even within Windows 95.

9  Every time you modify your source code, retranslate your module to create a new version of the .NMS symbol file.

  Related Topics


Removing Symbols and Source Code Pre-loading

To prevent SoftICE from pre-loading the symbols or source code associated with a particular file:

1	Select SoftICE Initialization Settings… from the Edit menu.

2	Select the Symbols tab.

3	Select the File in the symbols list and click Remove.

4	Click OK.

5	Reboot your PC and run SoftICE to apply your changes.

  Related Topics


Setting Exports Pre-loading

Use the Export initialization settings to select files from which SoftICE can extract export information upon SoftICE initialization. Extracting export information is useful for debugging DLLs when no debugging information is available.

1	Select SoftICE Initialization Settings… from the Edit menu.

2	Select the Exports tab.

3	Click Add to display the Select Export Files dialog box.

4	Select one or more files from which to extract the information and click OK.

5	Click OK in the Exports tab.

6	Reboot your PC and run SoftICE to apply your changes.

  Related Topics


Removing Exports Pre-loading

To prevent SoftICE from pre-loading for a particular file:

1	Select SoftICE Initialization Settings… from the Edit menu.

2	Select the Exports tab.

3	Select the File in the exports list and click Remove.

4	Click OK.

5	Reboot your PC and run SoftICE to apply your changes.

  Related Topics


Modifying Function Keys

To modify the SoftICE command assigned to a function key:

1	Select SoftICE Initialization Settings… from the Edit menu.

2	Select the Keyboard Mappings tab.

3	Select the function key you want to modify from the list of keyboard mappings and click Add.

SoftICE uses these abbreviations for the Function, Alt, Ctrl, and Shift keys:

Key	Abbreviation	Example
Function	F	F1
Alt	A	AF1
Ctrl	C	CF1
Shift	S	SF1
4  Change the command in the Command field and click OK.

You can use any valid SoftICE command and the characters caret(^) and semicolon (;). Place a caret (^) at the beginning of a command to instruct SoftICE to execute the command without placing it in the command line. The semicolon acts like the Enter key and instructs SoftICE to execute the command. You can place one or more semicolons in the same string.

5  Click OK.

6  Reboot your PC and run SoftICE to apply your changes.

  Related Topics


Creating Function Keys

You can assign SoftICE commands to any of the 12 function keys or key combinations involving Shift, Ctrl, or Alt and a function key.

1	Select SoftICE Initialization Settings… from the Edit menu.

2	Select the Keyboard Mappings tab.

3	Determine a function key or function key combination to which no commands are assigned.

4	Click Add.

5	Select the function key you want to use from the Key list.

6	Select a modifier.

To assign a command to a function key, click None. To assign a command to a function key combination, select Shift, Ctrl, or Alt.

7  Type a command in the Command field and click OK.

You can use any valid SoftICE command and the characters caret(^) and semicolon (;). Place a caret (^) at the beginning of a command to instruct SoftICE to execute the command without placing it in the command line. The semicolon instructs SoftICE to execute the preceding command. You can place one or more semicolons in the same string.

8  Click OK.

9  Reboot your PC and run SoftICE to apply your changes.

  Related Topics


Deleting Function Keys

To delete a function key assignment:

1	Select SoftICE Initialization Settings… from the Edit menu.

2	Select the Keyboard Mappings tab.

3	Choose the function key and click Remove.

4	Click OK.

5	Reboot your PC and run SoftICE to apply your changes.

  Related Topics


Restoring Function Keys

To restore all the keys you edited to their original settings:

1	Select SoftICE Initialization Settings… from the Edit menu.

2	Select the Keyboard Mappings tab.

3	Click Restore Defaults to restore all the keys you edited or removed to their original settings. Restore Defaults does not remove any function keys you create.

4	Click OK.

5	Reboot your PC and run SoftICE to apply your changes.

  Related Topics


Default Function Key Assignments

F1 = H;	F11 = ^G @SS:ESP;
F2 = ^WR;	F12 = ^P RET;
F3 = ^SRC;	SF3 = ^FORMAT;
F4 = ^RS;	AF1 = ^WR;
F5 = ^X;	AF2 = ^WD;
F6 = ^EC;	AF3 = ^WC;
F7 = ^HERE;	AF4 = ^WW;
F8 = ^T;	AF5 = CLS;
F9 = ^BPX;	AF11=dd dataaddr->0;
F10 = ^P;	AF12=dd dataaddr->4;

  Related Topics


Creating Persistent Macros

Persistent macros are user-defined commands that you can use in the same way as built-in commands. The definition, or body, of a macro consists of a sequence of command invocations. The allowable set of commands includes other user-defined macros and command-line arguments. Persistent macros are saved in the initialization file and automatically loaded with SoftICE.

1	Select SoftICE Initialization Settings… from the Edit menu.

2	Select the Macro Definitions tab.

3	Click Add to display the Add Macro Definition dialog box.

4	Type the name of the persistent macro definition in the Name field.

5	The macro name may be from three to eight characters long and may contain any alpha-numeric character or underscore (_). It must include at least one alphabetic character. A macro-name cannot duplicate an existing SoftICE command.

6	Type the macro definition in the Definition field.

The definition of a macro is a sequence of SoftICE commands or other macros separated by semicolons. You are not required to terminate the final command with a semicolon. Command-line arguments to the macro can be referenced anywhere in the macro body with the syntax %<parameter#>, where parameter# is a number between one and eight.

Example

The command MACRO asm = "a %1" defines an alias for the A (ASSEMBLE) command. The %1 is replaced with the first argument following asm or simply removed if no argument is supplied.

If you need to embed a literal quote character (") or a percent sign (%) within the macro body, precede the character with a backslash character (\). To specify a literal backslash character, use two consecutive backslashes (\\).

Note

Although it is possible for a macro to call itself recursively, it is not particularly useful, because there is no programmatic way to terminate the macro. If the macro calls itself as the last command of the macro (tail recursion), the macro executes until you use the ESC key to terminate it. If the recursive call is not the last command in the macro, the macro executes 32 times (the nesting limit).

7  Click OK.

8  Click OK in the Macro Definitions tab.

9  Reboot your PC and run SoftICE to apply your changes.

  Related Topics


Starting Persistent Macros

To execute a persistent macro form within your debugging session, simply type the name of the macro.

  Related Topics


Stopping Persistent Macros

To stop the execution of a persistent macro form within your debugging session, press the ESC key.

  Related Topics


Modifying Persistent Macros

To modify a persistent macro:

1	Select SoftICE Initialization Settings… from the Edit menu.

2	Select the Macro Definitions tab.

3	Select the macro you want to modify and click Add.

4	In the Add macro definitions window, modify the Name and Definition fields as appropriate, then click OK.

5	Click OK in the Macro Definitions tab.

6	Reboot your PC and run SoftICE to apply your changes.

  Related Topics


Deleting Persistent Macros

To delete a persistent macro:

1	Select SoftICE Initialization Settings… from the Edit menu.

2	Select the Macro Definitions tab.

3	Select the macro you want to delete and click Remove.

4	Click OK.

5	Reboot your PC and run SoftICE to apply your changes.

  Related Topics


Loading 32-bit DLL Exports Dynamically

Symbol Loader lets you load 32-bit exports without restarting the system. These exports include device drivers, Win 32 applications, and DLLs. Loading exports is useful for debugging DLLs when no debugging information is available.

1	Click Load exports [image].

2	Select the files you want to load and click Open.


Exports Definition
Exports are an aspect of the 16-bit and 32-bit Windows executable formats that enable dynamic (run-time) linking, usually between an executable that imports the functions and a .DLL that exports the functions.


Saving the Command Window History Buffer to a File

The SoftICE history buffer contains all the information displayed in the SoftICE Command window. Thus, saving the SoftICE history buffer to a file is useful for:

•	Dumping large amounts of data or register values

•	Disassembling code

•	Listing breakpoints logged by the BPLOG expression

•	Showing Windows messages logged by the BMSG command

•	Saving debugging messages sent from user programs that call OutputDebugString and kernel-mode programs that call KdPrint

To save the contents of the SoftICE history buffer to a file:

1	Make sure the information you want to save is displaying to the Command window, so that it is saved in the History Buffer.

For example, before dumping data, remove the Data window to force the data to display in the Command window.

2	From within Symbol Loader, click Save SoftICE history [image].

3	In the Save SoftICE History dialog box, name the file and select the location where you want to save it.


Translating Files

Symbol Loader automatically translates the source file into a .NMS symbol file the first time you load your module. If you want to request Symbol Loader to retranslate the file, click Translate [image].


Clearing the Symbol Loader Window

To clear the contents of the Symbol Loader window, choose Clear from the Edit menu.


Copying Information From the Symbol Loader Window

To copy information displayed in the Symbol Loader window to the system Clipboard, select the information and choose Copy from the Edit menu.


Contains all the information displayed in the SoftICE Command window.


Provides a variety of user-defined settings that determine your debugging environment at initialization.


Executes a series of commands when SoftICE initializes.


Determines the size of the SoftICE history buffer. The SoftICE history buffer contains all the information displayed in the Command window.


Determines the size of the trace buffer. The trace buffer can maintain back trace for the BPR and BPRW commands.


Determines whether Non-maskable interrupt (NMI) trapping is turned on or off. NMI trapping is useful if you have a means of generating an NMI, such as a breakout switch. Generating an NMI allows you to enter SoftICE even when all interrupts are disabled.


Specifies .NMS symbol files to load at initialization for debugging device drivers.

What do you want to do?

  Set symbols and source code pre-loading

  Remove symbols and source code pre-loading


Sets a default telephone number and modem initialization strings for remote debugging over a serial port.


Presets a phone number for the DIAL command.

Example  412-555-1212


Determines the communications port (COM1, COM2, COM3, or COM4) on the local system that you are using for serial communication. When you are through debugging the remote system, change this setting to None.


Presets the modem initialization string for the DIAL command.

Example  ATX0


Presets the modem initialization string for the ANSWER command.

Example  ATX0


Determines whether or not SoftICE uses lowercase letters for disassembling instructions.


Specifies DLLs and EXEs from which to load export symbols at initialization. Loading export symbols is useful for debugging DLLs when no debugging information is available.

What do you want to do?

  Set exports pre-loading

  Remove exports pre-loading


Defines your own commands to use within SoftICE. Macros created in this way are persistent macros.

What do you want to do?

  Create persistent macros

  Start persistent macros

  Stop persistent macros

  Modify persistent macros

  Delete persistent macros


Specifies the name of the persistent macro.


Defines the commands for the persistent macro.


Reassigns commands to SoftICE function keys or specifies new ones. You can assign SoftICE commands to any of the 12 function keys or key combinations involving Shift, Ctrl, or Alt and a function key.

What do you want to do?

  Create function keys

  Modify function keys

  Delete function keys

  Restore function keys

  View default function key assignments


Restores all the keys you edited or removed to their original settings. Restore defaults does not remove any function keys you create.


Used in combination with the Key field.  Alt specifies that you want to assign the command to a key combination that uses the Alt key with the function key you specify in the Key field.


Used in combination with the Key field.  Ctrl specifies that you want to assign the command to a key combination that uses the Ctrl key with the function key you specify in the Key field.


Used in combination with the Key field.  Shift specifies that you want to assign the command to a key combination that uses the Shift key with the function key you specify in the Key field.


Used in combination with the Key field.  None specifies that you do not want to assign the command to a key combination using Alt, Ctrl, or Shift. The command is assigned to the function key you specify in the Key field.


Provides troubleshooting settings for problems you might encounter while using SoftICE.


Disables mouse support. Use this setting if you are having problems using your mouse in SoftICE.


Disables Num Lock and Caps Lock programming. If your keyboard locks or behaves erratically when you load SoftICE, select this setting. If this does not solve the problem and you are using Windows NT, try the Do not patch keyboard driver setting.


Disables mapping of non-present pages. SoftICE attempts to find a page in physical memory even if the page table entry is marked as not present. To turn off this feature, select Disable mapping of non-present pages.


Disables Pentium support. SoftICE automatically detects whether or not you are using a Pentium processor. If you are using a new CPU with which SoftICE is unfamiliar and SoftICE mistakenly determines that you are using a Pentium processor, select this setting to turn off Pentium support.


Disables thread-specific stepping. The P (step over) command is thread sensitive. The return breakpoint set by the P command triggers only for the thread that was active when you issued the P command. Note that you would normally want to be in the same thread you are debugging. To turn off this feature, select Disable thread-specific stepping.


Windows NT only

Prevents SoftICE from patching the keyboard driver. If your keyboard locks or behaves erratically when you load SoftICE, select this setting. When you select this setting, SoftICE uses an alternate, typically less robust, method for keyboard handling. If this does not solve the problem, try the Disable Num Lock and Caps Lock programming setting.


Sets command line arguments and source file search paths for the files you load.


Determines the type of information Symbol Loader translates when it creates .NMS symbol files and whether or not your source code is stored in the symbol file.


Determines what type of information to load and whether or not to stop at your module's entry point.


Specifies command-line arguments to pass to your program.


Determines the search path SoftICE uses to locate files associated with this application. If Symbol Loader cannot locate the files within this search path, it uses the contents of the Default source file search path to expand its search.


Determines the search path SoftICE uses to locate files in general. Note that if you use the setting Source file search path for this program to specify the search path for a specific program, Symbol Loader uses the search path you specify for the program before looking in this global search path.


Determines whether or not Symbol Loader prompts you when it cannot find a source file.


Automatically minimizes Symbol Loader after you load an .EXE file.  This setting is global.


Translates only public (global) symbol names. Neither type information nor source code are included. This setting uses the least amount of symbol memory.


Translates type information only. Use this setting to provide type information for data structures that are reverse engineered.


Translates global, static, and local symbol names in addition to type information. Source code is not included.


Translates all available debugging information, including source code and line number information. This setting requires the most symbol memory and it is enabled by default.


Saves your source code with the symbol information in the .NMS file. You might want to include your source file in the symbol file under the following circumstances:

•	Loading source code at boot time

SoftICE does not look for code files at boot time. If you need to load source code for a VxD or Windows NT device driver, select Package source with symbol table. Then, modify the SoftICE initialization settings to load the symbol information for the VxD or device driver on startup.

•	Debugging on a system that does not have access to your source files

If you want to debug your application on a system that does not have access to your source files, select Package source with symbol table and copy the .NMS file to the other system.

Warning

If you select Package source with symbol table, your source code is available to anyone who accesses the symbol table. If you do not want others to have access to your source code, turn off this option if you provide the .NMS file with your application.


Loads the .NMS symbol file, but does not load the executable image. It also loads the associated source files if you selected Symbols and Source Code in the Translation options. By default, Symbol Loader selects this setting for .DLL, .SYS, and VxD file types.


Loads your executable and .NMS file. It also loads the associated source files if you selected Symbols and Source Code in the Translation options. By default, Symbol Loader selects this setting for .EXE files.

Note

The Translation settings determine which associated files are translated.


Creates a breakpoint at the first main module SoftICE encounters when loading your application.


Determines whether or not SoftICE  displays additional diagnostic information, such as module loading and unloading, in the Command window.


Windows 95 only

Indicates the amount of physical memory installed in your system. Set Total RAM to a value equal to or greater than the amount of memory on your system.


Specifies, in kilobytes, the amount of memory to reserve for storing certain types of debug information (for example, line number information). Under SoftICE for Windows 95, this memory region also serves as a buffer for holding .NMS images at boot time. By default, SoftICE reserves 1024KB under Windows 95 and 512KB under Windows NT.

Typically 512KB is adequate for both Windows 95 and Windows NT. However, you might need to increase the Symbol buffer size under the following circumstances:

•	If you are debugging larger programs, use 1024KB or more.

•	If you are using Windows 95 and you are loading symbols at boot time, determine the total size of all the .NMS files that are loaded at boot time and set the Symbol buffer size to this number.

To determine how much symbol memory is available, use the TABLE command. Note that most symbol information is stored in dynamically allocated memory.


Deletes the selected file from the list of files for which SoftICE pre-loads symbols and source code.


Displays a dialog that lets you specify a file for which you want to pre-load symbols and source code.


Lists the files for which SoftICE pre-loads symbols and source code.


Deletes the selected file from the list of files from which SoftICE extracts export information upon SoftICE initialization.


Displays a dialog that lets you specify one or more files from which you want to extract export information when SoftICE initializes.


Lists the files from which SoftICE extracts export information at initialization.


Specifies the maximum number of macros and breakpoint actions you can define during a SoftICE session. This number includes both run-time macros and persistent macros. The default value of 32 is the minimum value. The maximum value is 256.


Deletes the selected macro from the list of macros that are loaded when SoftICE initializes.


Displays a dialog that lets you define a persistent macro that automatically loads when SoftICE initializes.


Lists the persistent macros that automatically load when SoftICE initializes.


Creates a persistent macro with the name and definition you provide.


Lists the function keys and function key combinations defined for SoftICE. These keys are abbreviated as follows:

Abbreviation	Key

F	                Function

A	                Alt

C	                Ctrl

S	                Shift


Deletes the command assigned to the selected function key or function key combination.


Displays a dialog that lets you assign SoftICE commands to one or more function keys or function key combinations using Alt, Ctrl, or Shift.


Used in combination with the Modifier field.  The Key field specifies the function key to which you assign a SoftICE command.


Specifies the command assigned to the function key or function key combination using Alt, Ctrl, or Shift.


Assigns a SoftICE command to a function key or function key combination using Alt, Ctrl, or Shift.


Reserved for future use.


Reserved for future use.


Reserved for future use.


Reserved for future use.


Closes this dialog box and saves any changes you have made.


Closes this dialog box without saving any changes you have made.


Click this to display an overview of this dialog box.

For Help on an item, click [image]  at the top of the dialog box, and then click the item.


Closes this dialog box and saves any changes you have made.


Click this to display an overview of this dialog box.

For Help on an item, click [image]  at the top of the dialog box, and then click the item.


Deletes the selected symbol table from memory.


Lists the symbol tables stored in memory.


Lists the symbol tables currently stored in memory.

To delete a symbol table, click the ID for the symbol table and click Remove.


Restores all the Troubleshooting settings to their original defaults.